/**
  ******************************************************************************
  * @file	uArmRecorder.cpp
  * @author	David.Long	
  * @email	xiaokun.long@ufactory.cc
  * @date	2016-09-30
  * @license GNU
  * copyright(c) 2016 UFactory Team. All right reserved
  ******************************************************************************
  */

#include "uArmRecorder.h" 

uArmRecorder recorder;

extern void reportPos();

uArmRecorder::uArmRecorder()
{
	
}

void uArmRecorder::write(unsigned int addr, unsigned char data[], int num)
{
	unsigned char i=0;
	i = (addr % 128);
	// Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left
	if((i >= 119) && (num == 10))
	{
		i = 128 - i;
		iic_writebuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, i);// write data
		delay(5);
		iic_writebuf(data + i, EXTERNAL_EEPROM_USER_ADDRESS, addr + i, num - i);// write data
	}
	//if the left bytes are greater than 5, just do it
	else
	{
		iic_writebuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, num);// write data
	}
}

void uArmRecorder::read(unsigned int addr, unsigned char data[], int num)
{
	unsigned char i=0;
	i= (addr % 128);
	// Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left
	if( (i >= 119) && (num == 10))
	{
		i = 128 - i;
		iic_readbuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, i);// write data
		delay(5);
		iic_readbuf(data + i, EXTERNAL_EEPROM_USER_ADDRESS, addr + i, num - i);// write data
	}
	//if the left bytes are greater than 5, just do it
	else
	{
		iic_readbuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, num);// write data
	}
}


